package com.liyghting.datastructurealgorithm.sort;

/**
 * @author LiYiGuang
 * @date 2020/1/16 16:45
 */
public class NoSort {
	/**
	 * 
	 * 假设我们现在需要对 D，a，F，B，c，A，z
	 * 这个字符串进行排序，要求将其中所有小写字母都排在大写字母的前面，但小写字母内部和大写字母内部不要求有序。比如经过排序之后为
	 * a，c，z，D，F，B，A，这个如何来实现呢？如果字符串中存储的不仅有大小写字母，还有数字。要将小写字母的放到前面，大写字母放在最后，数字放在中间，不用排序算法，又该怎么解决呢？
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		char[] chars = { 'D', 'a', 'F', 'B', 'c', 'A', 'z' };
		//countingSort(chars);
        int maxcharIndex = 0;
        char maxchar = 'a';
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] <= 'z' && chars[i] >= 'a') {
                if (maxchar < chars[i]) {
                    maxcharIndex = i;
                }
            }
        }
		for (char c : chars) {
			System.out.print(c);
		}
	}

	public static void countingSort(char[] chars) {
		int[] count = new int[2];
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] <= 'z' && chars[i] >= 'a') {
				count[0]++;
			} else {
				count[1]++;
			}
		}
		count[1] = count[1] + count[0];
		char[] tmp = new char[chars.length];
		for (int i = chars.length - 1; i >= 0; i--) {
			if (chars[i] <= 'z' && chars[i] >= 'a') {
				tmp[count[0] - 1] = chars[i];
				count[0]--;
			} else {
				tmp[count[1] - 1] = chars[i];
				count[1]--;
			}
		}

		for (int i = 0; i < chars.length; i++) {
			chars[i] = tmp[i];
		}
	}

}
